package predict.app.service;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.icu.util.Calendar;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //implement接口，这个是onClick的接口
    private static MainActivity appRef = null;  //static内存容易泄漏
    private Button button1, button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        appRef = this;
        setContentView(R.layout.activity_main);

        button1 = (Button)findViewById(R.id.button);
        button1.setOnClickListener(this); //点击，有了implements和下面的onClick函数，所以这这样子就行了
        button2 = (Button)findViewById(R.id.button2);
        button2.setOnClickListener(this);
    }

    public static MainActivity getApp() {
        return appRef;   //传递activity
    }

    public void btEvent(String data) {
        //修改title，
        setTitle(data);
    }

    public void onClick(View arg0) {
        //仔细想这样写也不错
        if(arg0 == button1) {
            setTitle("什么乱七八糟");
            Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);//显示Intent传递消息

            /*
            *  1、定义一个等待的Intent，PendingIntent，然后是传给ALarmReceiver的，一个系统自带的广播的service
            *  2、定义一个闹钟，其实就是一个等待时间罢了，当时间到了，就发送广播
            *  3、刚才定义的等待Intent接收到广播了，执行操作
            *  4、传到了AlarmReceiver类，开始service
            *  5、service里面执行的内容
            */

            PendingIntent p_intent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
            //PendingIntent等待的Intent，getBroadcast是接收广播，PendingIntent满足条件才会执行的intent，才特定条件触发完才执行
            Calendar calendar = Calendar.getInstance();  //Cakebdar获取时间，获取一个Calendar对象并可以进行时间的计算，还有一个事件类型new Date()
            calendar.setTimeInMillis(System.currentTimeMillis()); //setTimeInMillis设置当前时间的毫秒数，也就是calendar设置个时间给他，timeinmillis是一个时间格式，System.currentTimeMillis()获取当前的系统时间，返回的是毫秒
            calendar.add(Calendar.SECOND, 1); //加上或者减去的时间，这里是添加秒，3秒
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);   //AlarmManager提醒，在指定的时间为我们广播一个指定的Intent
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), p_intent);  //setTimeInMillis是设置时间，get自然就是获得了
            //set方法，该方法用于设置一次性闹钟，第一个参数表示闹钟类型，第二个参数表示闹钟执行时间，第三个参数表示闹钟响应动作。
        }
        if(arg0 == button2) {
            Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
            PendingIntent p_intent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
            am.cancel(p_intent);
            finish();
        }
    }
}
